/**
 * 斐波那契数列（Fibonacci sequence）
 *
 * 斐波那契数（Fibonacci number）
 * ---------------------------------
 * 文档查看: /document/algo/fibonacci_sequence.md
 * 2021-01-20
 */

import Foundation

func fib(n: Int) -> Int {
  if (n < 2) {
    return n
  }
  var numPre:Int = 0
  var numNext:Int = 1
  let length = 2...n
  for _ in length {    
    let sum = numPre + numNext
    numPre = numNext
    numNext = sum 
  }
  return numNext
}

let n = 60
print("fib n=\(n) --> \(fib(n: n))")

// 验证方法输出的结果是否正确: fib1
// var n = 0 // -- 0
// print("fib n=\(n) --> \(fib(n: n))")
// n = 1 // -- 1
// print("fib n=\(n) --> \(fib(n: n))")
// n = 2 // -- 1
// print("fib n=\(n) --> \(fib(n: n))")
// n = 3 // -- 2
// print("fib n=\(n) --> \(fib(n: n))")
// n = 4 // -- 3
// print("fib n=\(n) --> \(fib(n: n))")
// n = 5 // -- 5
// print("fib n=\(n) --> \(fib(n: n))")
